#+TITLE: Endlessh Service
#+Author: Joshua Branson

* I want to make this into a REALLY simple service!

Ideally, I would love an example service, that just starts a program.  There is no configuration.

It just looks like:

(service some-service)

However, most services in guix, have a configuration field or configuration file.
* I should definitely try to use (define configuration).

There is some documentation in the guix manual about this.

* TODO things todo before I submit a patch to upstream issue # http://issues.guix.gnu.org/39136
  :LOGBOOK:
  - State "TODO"       from              [2021-02-27 Sat 10:43]
  :END:

** Does endlessh's logging feature work?  Should I enable this by default?

I can use "-vs". This is a TODO feature for later. I'm not too interested in
setting up logging.

** get endlessh using user "endlessh" instead of "root"

Currently I can try to run endlessh as "endlessh", but it does NOT run properly.

Will it work after a reboot?  maybe...
** DONE make sure it is using principle of least authority
   CLOSED: [2021-02-27 Sat 13:04]
   :LOGBOOK:
   - State "DONE"       from              [2021-02-27 Sat 13:04]
   :END:

   It seems to be pretty doing this.  This blog post talks more about it:

   http://guix.gnu.org/en/blog/2017/running-system-services-in-containers/
** use the existing code found here:

http://issues.guix.gnu.org/39136

Add documentation to it.

* how to get endlessh to bind to ports less than 1024

## If you want Endlessh to bind on ports < 1024
## 1) run: 
##     setcap 'cap_net_bind_service=+ep' /usr/local/bin/endlessh
## 2) uncomment following line
#AmbientCapabilities=CAP_NET_BIND_SERVICE
## 3) comment following line
PrivateUsers=true

